<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
require SYSPATH.'classes/kohana/core'.EXT;

if (is_file(APPPATH.'classes/kohana'.EXT))
{
	// Application extends the core
	require APPPATH.'classes/kohana'.EXT;
}
else
{
	// Load empty core extension
	require SYSPATH.'classes/kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('Europe/Lisbon');


/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale(LC_ALL, 'ru_RU.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://kohanaframework.org/guide/using.autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

// -- Configuration and initialization -----------------------------------------

/**
 * Set the default language
 */
I18n::lang('ru-ru');

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
Kohana::$environment = Kohana::DEVELOPMENT;

if (isset($_SERVER['KOHANA_ENV']))
{
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
	'base_url'   => '/',
	'index_file' => '',
));

/**
 * Setup Cookie. 
 */
Cookie::$expiration = 60 * 60 * 24 * 30;

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Config_File);

/**
 * Set vars for Date class. 
 */
Date::$timestamp_format = Kohana::$config->load('date.format');
Date::$timezone = Kohana::$config->load('date.timezone');

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	   'auth'            => MODPATH.'auth',       // Basic authentication
	   'cache'           => MODPATH.'cache',      // Caching with multiple backends
	   'database'        => MODPATH.'database',   // Database access
	   'pagination'      => MODPATH.'pagination',
	   'image'           => MODPATH.'image',      // Image manipulation
	   'imagefly'        => MODPATH.'imagefly',
	   'orm'             => MODPATH.'orm',        // Object Relationship Mapping
	   'orm_mptt'        => MODPATH.'orm_mptt',
	   'captcha'         => MODPATH.'captcha',
	   'bbcode'          => MODPATH.'bbcode',
	   'swift'           => MODPATH.'swift',
	   'profilertoolbar' => MODPATH.'profilertoolbar',
	));

/**
 * Set cache properties.
 */
Cache::$default = 'file';

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */
Route::set('redirect', 'r/<url>.php')
	->defaults(array(
		'controller' => 'redirect',
		'action' => 'redirect',
		'status' => '303',
	));
Route::set('backend', 'backend(/<controller>(/<action>(/par1:<par1>)(/par2:<par2>)(/par3:<par3>)(/par4:<par4>)(/par5:<par5>)))(/page/<page>).php')
	->defaults(array(
		'directory' => 'backend',
		'controller' => 'home',
		'action' => 'index',
	));
Route::set('frontend_home', '')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'pages',
		'action' => 'view',
		'page' => 'index',
	));
Route::set('frontend_pages', '(page-<page>.php)')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'pages',
		'action' => 'view',
		'page' => NULL,
	));
Route::set('frontend_models', 'models(/<action>).php')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'models',
		'action' => 'index',
	));
Route::set('frontend_video', 'video(/<action>).php')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'video',
		'action' => 'index',
	));
Route::set('frontend_wallpapers', 'wallpapers(/<action>).php')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'wallpapers',
		'action' => 'index',
	));
Route::set('frontend_forum', 'forum(/<action>(/<id>)(/<page>)).php')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'forum',
		'action' => 'sections',
	));
Route::set('frontend_user', 'user(/<action>).php', array(
		'action' => '(profile|logout)',
	))
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'user',
		'action' => 'profile',
	));
Route::set('frontend_user_confirm', 'confirm/<user_id>/<hash>/<timelimit>.php')
	->defaults(array(
		'directory' => 'frontend',
		'controller' => 'user',
		'action' => 'confirm',
	));
Route::set('default', '(<controller>(/<action>(/<id>)))')
	->defaults(array(
		'controller' => '404',
		'action' => 'index',
	));